#!/usr/bin/python
# -*- coding: utf-8 -*-

#$ -l h_rt=2:00:00
#$ -l virtual_free=100M
#$ -j y
#$ -o $HOME/biathstats.out
#$ -N biathstats

import sys
sys.path.append('/home/artem/pywikipedia')
#sys.path.append('/home/artem/Dropbox/wiki/bot/pywikipedia')

# Функция производит викификацию слова при наличии страницы-редиректа в Википедии
def Wikification(pagename):
	import wikipedia
	
	site = wikipedia.getSite('ru', 'wikipedia')
	
	page = wikipedia.Page(site, pagename)
	
	if page.exists():
		if page.isRedirectPage():
			page = page.getRedirectTarget()
		return u'[[w:' + page.title() + u'|' + pagename + u']]'
	else:
		return pagename

# Функция читает содержимое указанной веб-страницы и возвращет из неё данные о результатах гонки, представленные в виде вики-таблицы
def GetCurrentTableNew(url, N):
	import urllib2
	
	from BeautifulSoup import BeautifulSoup

	print u"Retrieving " + url
	webpage = urllib2.urlopen(url.decode('utf8'))
	print "\nDone!"
	
#	f = open("w.html", 'w')
#	f.write(webpage.read())
#	f.close()
	
	soup = BeautifulSoup(webpage, fromEncoding="utf8")
	print soup
		
	table = soup.findAll(attrs={'class': 'tr_h b-table-sortlist'})[0].findAll('tr')[0:N+1]
	
	result = u"{| class = \"standard\"\n|- style=\"text-align:center\"\n| место\n| colspan=2 | спортсмен\n| время\n| отставание\n| промахи\n| очки\n|-"
	for i in range(1, N+1):
		if i % 2 == 0:
			color = u"White"
		else:
			color = u"LightCyan"
		if i < 11:
			color = u"LightSkyBlue"
			if i < 7:
				color = u"#f7f6a8"
				if i == 3:
					color = u"#cc9966"
				if i == 2:
					color = u"Silver"
				if i == 1:
					color = u"Gold"
		
		tds = table[i].findAll('td')
		name = tds[2].a.contents[0]
		country = tds[3].a.contents[0]
		time = tds[4].contents[0]#.replace("\n","")
		dtime = tds[5].contents[0]#.replace("\n","")
		misses = tds[6].contents[0]#.replace("\n","")
		points = tds[7].contents[0]#.replace("\n","")
	
		result += " style=\"background-color:" + color + "\"\n| align=center |" + str(i+1) + u" || {{Флаг-рус|" + country + u"}} || " + Wikification(name) + u" || " + time + u" || " + dtime + u" || " + misses + u" || " + points + "\n|-"
	result += u"\n|}"
	
	return result

# Функция читает содержимое указанной веб-страницы и возвращет из неё данные о результатах гонки, представленные в виде вики-таблицы
def GetCurrentTable(url, N):
	import urllib2
	
	from BeautifulSoup import BeautifulSoup

	print u"Retrieving " + url
	webpage = urllib2.urlopen(url.decode('utf8'))
	print "\nDone!"
	
	soup = BeautifulSoup(webpage)
	
	table = soup.findAll(attrs={'class': 'stat-table'})[0].tbody.findAll('tr')[0:N]
	
	result = u"{| class = \"standard\"\n|- style=\"text-align:center\"\n| место\n| colspan=2 | спортсмен\n| время\n| промахи\n| очки\n|-"
	for i in range(0,N):
		if i % 2 == 0:
			color = u"White"
		else:
			color = u"LightCyan"
		if i < 10:
			color = u"LightSkyBlue"
			if i < 6:
				color = u"#f7f6a8"
				if i == 2:
					color = u"#cc9966"
				if i == 1:
					color = u"Silver"
				if i == 0:
					color = u"Gold"
		
		tds = table[i].findAll('td')
		
		country = tds[1].div.findAll('i')[1]['title']
		name = tds[1]['title']
		time = tds[2].contents[0].replace("\n","")
		misses = tds[3].contents[0].replace("\n","")
		points = tds[4].contents[0].replace("\n","")
	
		result += " style=\"background-color:" + color + "\"\n| align=center |" + str(i+1) + u" || {{Флаг-рус|" + country + u"}} || " + Wikification(name) + u" || " + time + u" || " + misses + u" || " + points + "\n|-"
	result += u"\n|}"
	
	return result

def GetGeneralTable(url, N):
	import urllib2
	
	from BeautifulSoup import BeautifulSoup

	print "Retrieving " + url
	webpage = urllib2.urlopen(url.decode('utf8'))
	print "\nDone!"
	
	soup = BeautifulSoup(webpage)
	
	table = soup.findAll(attrs={'class': 'stat-table table'})[0].tbody.findAll('tr')[0:N]
	
	result = u"{| class = \"standard\"\n|- style=\"text-align:center\"\n| место\n| colspan=2 | спортсмен\n| очки\n|-"
	for i in range(0,N):
		if i % 2 == 0:
			color = u"White"
		else:
			color = u"LightCyan"
		if i == 2:
			color = u"#cc9966"
		if i == 1:
			color = u"Silver"
		if i == 0:
			color = u"Gold"
		
		tds = table[i].findAll('td')
		
		country = tds[1].div.findAll('i')[1]['title']
		
		name = table[i].find('a').contents[0]
		points = tds[2].contents[0].replace("\n","")
	
		result += " style=\"background-color:" + color + "\"\n| align=center | " + str(i+1) + u" || {{Флаг-рус|" + country + u"}} || " + Wikification(name) + u" || " + points + "\n|-"
	result += u"\n|}"
	
	return result

url1 = u"http://www.sports.ru/stat/biathlon/193/race/615845.html"
#url1 = u"http://www.championat.com/other/_biathlon/55/astat_game/4359.html"
url2 = u"http://www.sports.ru/tags/1694630.html?type=table&s=2964"

text = u"{{дата|{{subst:CURRENTDAY}} {{subst:CURRENTMONTHNAMEGEN}} {{subst:CURRENTYEAR}}}}\n{{Биатлон}}\n\n\n=== Результаты ===\n{|\n|\n" + GetCurrentTable(url1, 40) + u"\n| valign=top | {{Фото||200|}}\n|}\n\n=== Общий зачёт ===\n" + GetGeneralTable(url2, 20) + u"\n\n{{haveyoursay}}\n\n== Источники ==\n* {{источник|url=" + url1 + u"|Название=Результаты гонки|Издатель=sports.ru}}\n* {{источник|url=|Название=|Издатель=Союз биатлонистов России|Дата=}}\n\n{{публиковать}}\n\n[[Категория:Кубок мира по биатлону 2012/2013]]"

print text
#print GetCurrentTable(url1, 30)
#print GetGeneralTable(url2, 20)